# Clan

## Описание
В нашей любимой игре царила гармония и баланс, пока в нём не появился этот неприятных клан. Я залез на компьютер к их самому главному, но он быстро меня заметил. 
У меня получилось достать только этот файлик. Посмотришь? Вдруг будет что-то полезное!

## WriteUp
Рассмотрев файлик в **Hex** редакторе понимаем, что перед нами исполняемый файл формата **Exe** для платформы **x64**.
Откроем его в **Ida**.

Беглым анализом видно, что **проверка флага** осуществляется в функции **sub_140001440**, в которой значения сравниваются с массивом **byte_140007040**. В масиве видно, что данные зашифрованы.

Находим, что наш флаг шифруется в функции **sub_140001480**, попробуем анализировать её:

1)Начиная с инструкции **00000001400016BA** **HexRays** рисует кучу вложенных циклов **While**, однако внимательно посмотрев код на ассемблере, становится ясно, что тут лишь **один такой цикл**. 
И всё что тут представлено это множество конструкций типа:
```
if(....){
	.....
	continue;
}
```
2)Анализируя эти конструкции, становится ясно, что перед нами виртуальная машина со следующими характеристиками:
	**<br>Размер озу 65536 байт
	<br>3 регистра
	<br>1 битовый регистр флагов
	<br>2 регистра по 100 байт (in и out)**

3)Код программы для виртуальной машине находится в теле этой же функции, начиная с инструкции **0000000140001539** и до **000000014000163D**

Проанализировав код программы, понимаем, что перед нами обычное **XOR** шифрование с однобайтовым ключом, захаркоженым в теле программы.

Вспоминаем, что наши зашифрованные значения сравниваются с **byte_140007040**. Расшифровываем **byte_140007040** и получаем флаг.

# Flag

RDGCTF{600d_v1r7u4l_m4ch1n3_15_7h3_b357_w4y_70_pr073c7_y0ur_pr06r4m}